
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
//导入和使用Vuex
// 定义state并给定初始值
const state={
    isLogin:false,//用户是否登录
    in:2,//已登录用户人数
    out:0,//未登录用户人数
    loginNum:0,//虚拟用户人数
    count:0,//计数器
}

// 定义getters
const getters = {
  allNum:(state)=>{
    return state.in+state.out
  }
}
// 定义actions，注意参数的不同形式。
const actions = {
  //增加虚拟用户数量
  addlogNum({ commit, state},loginNum){
    commit('addLogNum',loginNum);
  },
  //计数器减少
  minus(context){
    context.commit("minus");
  },
  //5秒后退出登录
  tlogout({ commit}){
    console.log("wait 5s")
    setTimeout(()=>{
      commit('logout');
    },5000)
  }
}
// 定义mutations
const mutations = {

    //计数器count'增加
    add(state){
      state.count++;
    },
    //计数器count减少
    minus(state){
      state.count--;
    },
    //登录
    login(state){  //登录
      state.isLogin=true;
      state.in++;
    },
    logout(state){//退出登录
      state.isLogin=false;
      state.in--;
    },
    //增加虚拟用户数量,flag区分在线虚拟用户和离线虚拟用户
  //mutation的方法只能由两个参数，要传递多个参数都写在第二个参数里
  addLogNum(state,{loginNum,flag}){
    if(flag)
      state.in+=loginNum;
      else state.out+=loginNum;
        state.loginNum=loginNum;
    }
}

// 对外暴露接口
export default new Vuex.Store({
    state,
    getters,
    actions,
    mutations
});


// export default new vuex.Store({
//   modules:{
//            counter:{
//                  states,
//                  mutatons,
//                  getters,
//                  actions
//                  },
//            login:{}
//       }
// });
